//package com.lepu.app.fun.chat.fragment;
//
//import android.annotation.SuppressLint;
//import android.content.Intent;
//import android.media.MediaPlayer;
//import android.net.Uri;
//import android.os.Bundle;
//import android.os.Handler;
//import android.os.Message;
//import android.text.TextUtils;
//import android.view.LayoutInflater;
//import android.view.View;
//import android.view.ViewGroup;
//
//import com.app.utils.LoginUtil;
//import com.app.utils.ObserverConst;
//import com.core.lib.core.AsyncRequest;
//import com.core.lib.utils.Observer;
//import com.core.lib.utils.ObserverManager;
//import com.core.lib.utils.main.AppManager;
//import com.core.lib.utils.main.LogUtilBase;
//import com.core.lib.utils.main.UIHelper;
//import com.core.lib.widget.MyDialog;
//import com.lepu.app.fun.chat.activity.ChatMainActivity;
//import com.lepu.app.fun.chat.activity.DoctorMyDetailActivity;
//import com.lepu.app.fun.chat.adapter.ChatMessageAdapter;
//import com.lepu.app.fun.chat.adapter.ChatRoomMessageAdapter;
//import com.lepu.app.fun.chat.bean.ChatMessage;
//import com.lepu.app.fun.chat.bean.ChatRoomMessage;
//import com.lepu.app.fun.chat.bean.ChatRoomSession;
//import com.lepu.app.fun.chat.bean.ChatSession;
//import com.lepu.app.fun.chat.bean.Media;
//import com.lepu.app.fun.chat.bean.MutiRoomEntity;
//import com.lepu.app.fun.chat.core.ChatManager;
//import com.lepu.app.fun.chat.core.MessageBuilder;
//import com.lepu.app.fun.chat.util.ChatConst;
//import com.lepu.app.fun.chat.util.ChatSendListener;
//import com.lepu.app.fun.chat.util.Constants;
//import com.lepu.app.fun.my.MyLectureDetailActivity;
//import com.lepu.app.fun.my.MyLectureDoctorInfoActivity;
//import com.lepu.app.fun.my.bean.BeanLecture;
//import com.lepu.app.fun.my.bean.BeanMyActivityDetail;
//import com.lepu.app.widget.CustomTopBarNew;
//import com.lepu.app.widget.CustomTopBarNew.OnTopbarNewLeftLayoutListener;
//import com.lepu.app.widget.CustomTopBarNew.OnTopbarNewRightButtonListener;
//import com.lepu.pasm.R;
//
//import java.io.File;
//import java.util.ArrayList;
//import java.util.List;
//
///**
// * 医生聊天 允许发送文件，图片，语音等
// *
// * @author wxd
// *
// */
//public class ChatFragmentLecture extends ChatFragmentBase implements
//		OnTopbarNewLeftLayoutListener, OnTopbarNewRightButtonListener,
//		AsyncRequest, ChatSendListener, Observer {
//
//	private static final int MSG_INIT_DATA = 10;
//
//	private static final String REQUEST_DATA = "request_data";
//
//	private boolean mInitDataSuccess = false;// 是否加载完数据
//
//	private CustomTopBarNew mTopbar = null;
//
//	private ChatMessageAdapter mDataAdapter = null;
//	private List<ChatMessage> mDataList = null;
//	private ChatSession mChatSession = new ChatSession();
//	private BeanMyActivityDetail mBeanMyActivityDetail = new BeanMyActivityDetail();
//
//	@Override
//	public void onCreate(Bundle savedInstanceState) {
//		super.onCreate(savedInstanceState);
//	}
//
//	@SuppressLint("InflateParams")
//	@Override
//	public View onCreateView(LayoutInflater inflater, ViewGroup container,
//			Bundle savedInstanceState) {
//
//		Bundle data = getArguments();
//		if (data != null && data.size() > 0) {
//			mBeanMyActivityDetail = (BeanMyActivityDetail) data.getSerializable("BeanMyActivityDetail");
//		}
//
//		mNeedSendFile = true;
//		boolean flag = true;
//		if(mBeanMyActivityDetail != null){
//			flag = true;//test remove
//			//flag = (mBeanMyActivityDetail.UserRank == 1) ? true : false;
//		}
//		mNeedSendSound = flag;
//
//		mView = LayoutInflater.from(getActivity()).inflate(
//				R.layout.chat_fragment_lecture, null, false);
//		super.onCreateView(inflater, container, savedInstanceState);
//		init();
//		return mView;
//	}
//
//	@Override
//	public void onPause() {
//		super.onPause();
//
//		//ChatManager.getInstance().resetNewMsgCount(mChatSession.getSessionId());
//	}
//
//	@Override
//	public void onDestroy() {
//		super.onDestroy();
//
//		mInitDataSuccess = false;
//		ObserverManager.getInstance().removeObserver(this);
//	}
//
//	@Override
//	public void setUserVisibleHint(boolean isVisibleToUser) {
//		super.setUserVisibleHint(isVisibleToUser);
//
//		if (isVisibleToUser) {
//			if (!mInitDataSuccess) {
//				// 第一次进入页面获取数据
//				mInitDataSuccess = true;
//			}
//		}
//	}
//
//	@Override
//	public void onTopbarLeftLayoutSelected() {
//		mBaseFragmentActivity.finish(true);
//	}
//
//	@Override
//	public void onTopbarRightButtonSelected() {
//		//讲座医生详情
//		Intent intent = new Intent(mBaseFragmentActivity,
//				MyLectureDoctorInfoActivity.class);
//		intent.putExtra("DoctorID", String.valueOf(mBeanMyActivityDetail.DoctorID));
//		mBaseFragmentActivity.startActivity(intent, true);
//	}
//
//	/*
//	 * 初始化ui控件，不要初始化数据！！！！
//	 *
//	 * 初始化控件，需要用mMainView.findViewById 不能使用findViewById，否则程序会闪退的
//	 */
//	private void init() {
//		mTopbar = (CustomTopBarNew) mView.findViewById(R.id.topbar);
//		mTopbar.setonTopbarNewLeftLayoutListener(this);
//		//mTopbar.setRightText("讲座人资料");
//		//mTopbar.setOnTopbarNewRightButtonListener(this);
//
//		mChatSendListener = this;
//
//		mTopbar.setTopbarTitle(mBeanMyActivityDetail.ActivityName);
//
//		//是否可以聊天
//		boolean flag = mBeanMyActivityDetail.IfCanChat;
//		if(flag){
//			mChatInputLayout.setVisibility(View.VISIBLE);
//		}else{
//			mChatInputLayout.setVisibility(View.GONE);
//		}
//
//		// add listen
//		ObserverManager.getInstance().addObserver(
//				ObserverConst.NOTIFY_CHAT_MESSAGE_LECTURE, this);
//
//		new Thread(new Runnable() {
//
//			@Override
//			public void run() {
//				initData();
//			}
//		}).start();
//	}
//
//	private void initData() {
//		mDataList = ChatManager.getInstance().getChatMessages(mChatSession.getSessionId());
//		if (null == mDataList) {
//			mDataList = new ArrayList<ChatMessage>();
//		} else {
//			for (int i = 0; i < mDataList.size(); i++) {
//				mDataList.get(i).setGuestProfilePicId(
//						mChatSession.getUserProfilePictureId());
//			}
//		}
//		mHandler.sendEmptyMessage(MSG_INIT_DATA);
//	}
//
//	/**
//	 * 聊天过程中，监听到被移除讲座，弹框显示
//	 */
//	private void showRemoveLectureChatDialog() {
//		MyDialog dialog = new MyDialog(getActivity())
//				.setMessage("抱歉，管理员已将您移除讲座群。")
//				.setNegativeButtonSplitImageHide(true)
//				.setPositiveButton(R.string.app_ok,
//						new View.OnClickListener() {
//
//							@Override
//							public void onClick(View v) {
//								AppManager.getAppManager().finishActivity(ChatMainActivity.class);
//								AppManager.getAppManager().finishActivity(MyLectureDetailActivity.class);
//							}
//						});
//
//		dialog.create(null);
//		dialog.setCancelable(false);
//		dialog.setCanceledOnTouchOutside(false);
//		dialog.showMyDialog();
//	}
//
//	@SuppressLint("HandlerLeak")
//	Handler mHandler = new Handler() {
//		public void handleMessage(Message msg) {
//			switch (msg.what) {
//			case MSG_INIT_DATA:
//
//				mDataAdapter = new ChatMessageAdapter(getActivity(),
//						ChatFragmentLecture.this, mDataList,
//						ChatConst.TYPE_ONLINE_CHAT_LECTURE);
//				mDataListview.setAdapter(mDataAdapter);
//
//				scrollBottom();
//				break;
//
//			default:
//				break;
//			}
//		};
//	};
//
//	@Override
//	public void RequestComplete(Object object, Object data) {
//		if (object.equals(REQUEST_DATA)) {
//			mBaseFragmentActivity.hideProgressDialog();
//		}
//	}
//
//	@Override
//	public void RequestError(Object object, int errorId, String data) {
//		if (object.equals(REQUEST_DATA)) {
//			mBaseFragmentActivity.hideProgressDialog();
//		}
//	}
//
//	// ======================================================
//	@Override
//	public void sendText(String content) {
//
//		if (!TextUtils.isEmpty(content)) {
//			ChatMessage chatMessage = MessageBuilder.buildNewTextMessage(
//					mChatSession, content);
//			ChatManager.getInstance().sendMessage(mChatSession, chatMessage);
//
//			mChatContentEditText.setText("");
//			mDataListview.setSelection(mDataList.size() - 1);
//		} else {
//			// base fragment sendText
//			// 实际上已经做了非空的处理，统一做了提示
//		}
//	}
//
//	@Override
//	public boolean sendPhoto(String imageFilePath) {
//
//		boolean flag = false;
//		File file = null;
//		if (TextUtils.isEmpty(imageFilePath)) {
//			flag = true;
//		} else {
//			file = new File(imageFilePath);
//			if (!file.exists()) {
//				flag = true;
//			}
//		}
//
//		if (flag) {
//			UIHelper.showToast(getActivity(), "获取媒体资源失败");
//		} else {
//			ChatMessage chatMessage = MessageBuilder.buildNewImageMessage(
//					mChatSession, imageFilePath,
//					Constants.Chat.CHAT_IMAGE_STYLE_LARGE, (int) file.length(),
//					false);
//			ChatManager.getInstance().prepareSendMediaMessage(mChatSession,
//					chatMessage);
//		}
//		return flag;
//	}
//
//	@Override
//	public void sendPhotos(ArrayList<String> photoFileList) {
//		if (photoFileList != null && photoFileList.size() > 0) {
//			for (int i = 0; i < photoFileList.size(); i++) {
//				String filePath = photoFileList.get(i);
//				sendPhoto(filePath);
//			}
//		}
//	}
//
//	@Override
//	public boolean sendVoice(String voiceFilePath) {
//
//		File file = new File(voiceFilePath);
//		int duration = 0;
//		long size = file.length();
//
//		MediaPlayer mp = MediaPlayer.create(getActivity(),
//				Uri.parse(voiceFilePath));
//		duration = mp.getDuration();// ms
//
//		ChatMessage chatMessage = MessageBuilder.buildNewAudioMessage(
//				mChatSession, voiceFilePath, duration, size,
//				Constants.Chat.CHAT_MIME_TYPE_AMR, false);
//		ChatManager.getInstance().prepareSendMediaMessage(mChatSession,
//				chatMessage);
//
//		return true;
//	}
//
//	// ===========================
//	@Override
//	public void reSendContent(int position) {
//		ChatMessage message = mDataList.get(position);
//		mDataList.remove(position);
//
//		if (message.getMessageType() == Constants.Chat.CHAT_MESSAGE_TYPE_TEXT) {
//			String sendContent = message.getContent();
//
//			ChatMessage chatMessage = MessageBuilder.buildResendTextMessage(
//					mChatSession, sendContent, message.getMessageId());
//			ChatManager.getInstance().sendMessage(mChatSession, chatMessage);
//
//			mChatContentEditText.setText("");
//			mDataListview.setSelection(mDataList.size() - 1);
//		} else if (message.getMessageType() == Constants.Chat.CHAT_MESSAGE_TYPE_IMAGE) {
//			Media media = message.getMedia();
//			if (media == null) {
//				return;
//			}
//
//			String imageFilePath = message.getMedia().getFullName();
//
//			File file = new File(imageFilePath);
//			if (file.exists()) {
//				ChatMessage chatMessage = MessageBuilder
//						.buildResendImageMessage(message.getMessageId(),
//								mChatSession, imageFilePath,
//								Constants.Chat.CHAT_IMAGE_STYLE_LARGE,
//								(int) file.length(), true);
//				ChatManager.getInstance().prepareSendMediaMessage(mChatSession,
//						chatMessage);
//			}
//		} else if (message.getMessageType() == Constants.Chat.CHAT_MESSAGE_TYPE_AUDIO) {
//			Media media = message.getMedia();
//			if (media == null) {
//				return;
//			}
//			ChatMessage chatMessage = MessageBuilder.buildResendAudioMessage(
//					message.getMessageId(), mChatSession, media.getFullName(),
//					media.getDuration(), media.getObjectSize(),
//					Constants.Chat.CHAT_MIME_TYPE_AMR);
//			ChatManager.getInstance().prepareSendMediaMessage(mChatSession,
//					chatMessage);
//		}
//	}
//
//	/**
//	 * main thread
//	 */
//	@Override
//	public void notify(String name, Object sender, Object data) {
//
//		if (name.equals(ObserverConst.NOTIFY_CHAT_MESSAGE_LECTURE)) {
//
//			int msgWhat = (Integer) sender;
//
//			ChatMessage message = (ChatMessage) data;
//
//			if (null == message) {
//				return;
//			}
//
//			long sessionId = mChatSession.getSessionId();
//			if (sessionId != message.getSessionId()) {
//				return;
//			}
//
//			boolean isNew = false;
//			switch (msgWhat) {
//			case Constants.Chat.CHAT_MESSAGE_SENT:
//				LogUtilBase.LogD(null, "Chatting Room:CHAT_MESSAGE_SENT");
//
//				mDataList.add(message);
//
//				mDataAdapter.notifyDataSetChanged();
//				mDataListview.setSelection(mDataListview.getCount() - 1);
//				break;
//			case Constants.Chat.CHAT_MESSAGE_RECEIVED:
//				LogUtilBase.LogD(null, "Chatting Room:CHAT_MESSAGE_RECEIVED");
//				isNew = true;
//				for (int i = 0; i < mDataList.size(); i++) {
//					if (mDataList.get(i).getMessageId()
//							.equals(message.getMessageId())) {
//						mDataList.set(i, message);
//						isNew = false;
//						break;
//					}
//				}
//
//				if (isNew) {
//					mDataList.add(message);
//				}
//				mDataAdapter.notifyDataSetChanged();
//				mDataListview.setSelection(mDataListview.getCount() - 1);
//				break;
//			case Constants.Chat.CHAT_MESSAGE_CHANGED:
//				LogUtilBase.LogD(null, "Chatting Room:CHAT_MESSAGE_CHANGED");
//				for (int i = 0; i < mDataList.size(); i++) {
//					if (mDataList.get(i).getMessageId()
//							.equals(message.getMessageId())) {
//						mDataList.set(i, message);
//						break;
//					}
//				}
//				mDataAdapter.notifyDataSetChanged();
//				mDataListview.setSelection(mDataListview.getCount() - 1);
//				break;
//			case Constants.Chat.CHAT_MESSAGE_REPLACE:
//				LogUtilBase.LogD(null, "Chatting Room:CHAT_MESSAGE_REPLACE");
//				for (int i = 0; i < mDataList.size(); i++) {
//					if (mDataList.get(i).getMessageId()
//							.equals(message.getMessageId())) {
//						mDataList.remove(i);
//						break;
//					}
//				}
//				mDataList.add(message);
//				mDataAdapter.notifyDataSetChanged();
//				mDataListview.setSelection(mDataListview.getCount() - 1);
//				break;
//
//			case Constants.Chat.CHAT_MESSAGE_DOWNLOAD_MEDIA:
//				// NO need to implement
//				// Media media = (Media) data.getSerializable("media");
//				// MediaManager.getInstance().loadImage(chatSession,media,
//				// Constants.Http.HTTP_DOWNLOAD_IMAGE_THUMBNAIL,new
//				// ImageLoader(), new ImageView());
//				break;
//			}
//		}
//	}
//
//}
